还没有笔记
选中页面文字后点击「高亮」按钮添加
COMS W3157
Borowski 博士

如今,终端通常指的是在您的个人计算机上运行的终端模拟器应用程序。
它向用户(显示器)发送文本输出,并从用户(键盘)接收文本输入。
多年前,您会使用低功耗的计算机终端作为“哑终端”或“瘦客户端”连接到主机。
本课程中与 Linux 的所有交互都将通过终端窗口完成。
终端运行着 shell,它使我们能够运行应用程序。


图 1.1 UNIX 操作系统的架构
进一步阅读:
https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html\# What-is-a-shell_003f
| 名称 | 路径 | FreeBSD 8.0 | Linux 3.2.0 | Mac OS X 10.6.8 | Solaris 10 |
| :--- | :--- | :---: | :---: | :---: | :---: |
| Bourne shell | /bin/sh | $\bullet$ | $\bullet$ | copy of bash | $\bullet$ |
| Bourne-again shell | /bin/bash | optional | $\bullet$ | $\bullet$ | $\bullet$ |
| C shell | /bin/csh | link to tcsh | optional | link to tcsh | $\bullet$ |
| Korn shell | /bin/ksh | optional | optional | $\bullet$ | $\bullet$ |
| TENEX C shell | /bin/tcsh | $\bullet$ | optional | $\bullet$ | $\bullet$ |
图 1.2 UNIX 系统上常用的 Shell
当您首次登录时,shell 会将您置于您的主目录:/home/

接下来的四张幻灯片简要描述了 Linux 文件系统中目录的内容。
粗体显示的对本课程尤为重要。
/bin : /bin 目录包含在系统以单用户模式挂载时必须存在的基本用户二进制文件(程序)。在现代发行版中,它是 /usr/bin 的快捷方式(符号链接)。
/boot : /boot 目录包含引导系统所需的文件——例如,GRUB 引导加载程序的文件和您的 Linux 内核都存储在这里。然而,引导加载程序的配置文件不在此处——它们与其他配置文件一起位于 /etc 中。
/dev: Linux 将设备公开为文件,/dev 目录包含许多表示设备的特殊文件。此目录还包含伪设备,它们是不实际对应硬件的虚拟设备。例如,/dev/random 生成随机数。
/etc : /etc 目录包含配置文件,通常可以在文本编辑器中手动编辑。
/home : 用户的主目录。每次创建新用户时,都会在 home 目录内创建一个以用户命名的目录,其中包含 Desktop、Downloads、Documents 等其他目录。
/lib : /lib 目录包含 /bin 和 /sbin 文件夹中基本二进制文件所需的库。/usr/bin 文件夹中的二进制文件所需的库位于 /usr/lib 中。
/lost+found : 此目录在 Linux 安装期间安装,用于恢复可能因意外关机而损坏的文件。
/media : 为 /media/cdrom 等可移动设备创建的临时挂载目录。
/mnt : 用于挂载文件系统的临时挂载目录。
/opt : opt 是 optional 的缩写。包含第三方应用程序软件。
/proc : 一个虚拟的伪文件系统,其中包含有关系统和具有特定进程 ID(即 pid)的运行进程的信息。
/root : 这是 root 用户的主目录,不应与 '/' 混淆。
/run : 相当新的 /run 目录为应用程序提供了一个标准位置来存储它们所需的临时文件,例如套接字和进程 ID。
/sbin : /sbin 目录类似于 /bin 目录。它包含通常由 root 用户运行以进行系统管理的基本二进制文件。
/srv : /srv 目录包含“系统提供的服务的数据”。如果您使用 Apache HTTP 服务器提供网站,您很可能会将网站文件存储在 /srv 目录下的某个目录中。
/sys : 现代 Linux 发行版包含一个 /sys 目录作为虚拟文件系统,它存储并允许修改连接到系统的设备。
/tmp : 应用程序将临时文件存储在 /tmp 目录中。这些文件通常在系统重启时删除,并且可能随时被 tmpwatch 等实用程序删除。
/usr : /usr 目录包含用户使用的应用程序和文件,而不是系统使用的应用程序和文件。
/var: 代表 variable。此目录的内容预计会增长。此目录包含日志、锁、假脱机、邮件和临时文件。
命令提示符是 shell 非常简单的用户界面。我们用它来运行命令行应用程序。
user @lubuntu-24-10:~$ echo "Hello, world!"
Hello, world!
user @lubuntu-24-10:~$ pwd
/home/user
user @lubuntu-24-10:~$ 代表 shell 提示符。您无需键入此内容。
user 是当前用户的名称,后跟 @。
lubuntu-24-10 是主机名,即计算机的名称,后跟 :。
~ 代表用户的主目录,后跟 shell 提示符符号 $。
在测验和/或考试中,您很可能只会看到提示符 $ 的简短表示法。
命令提示符是 shell 非常简单的用户界面。我们用它来运行命令行应用程序。
user @lubuntu-24-10:~$ echo "Hello, world!"
Hello, world!
user @lubuntu-24-10:~$ pwd
/home/user
echo 是一个命令行应用程序。
"Hello, world!" 是 echo 应用程序的参数,即要在屏幕上打印的字符串,后跟一个换行符。
echo 应用程序终止后,用户返回到 shell,命令提示符重新打印。
示例显示接下来执行 pwd。
pwd 未提供任何参数,仅打印用户的工作目录。
提示符已配置为在冒号后显示工作目录。
shell 使您能够执行各种命令。可用的命令和选项可能因系统而异。
Linux 区分大小写。
讲座中显示的所有示例都将在 lubuntu VM、multipass 和 ubuntu Google 云平台 bb.cs.columbia.edu 中运行。
基本命令:
| Shell 内置命令 | 用户命令 |
| :--- | :--- |
| - Shell 实现它们
- 数量少 | - 已安装的程序位于 |
| - 例如:cd, exit | - bin 或 /usr/bin
- 经常使用 |
| | - 数量多 |
| | - 您的 shell 需要知道它们的位置 |
echo: 打印参数
pwd: 打印工作目录的名称
cd: 更改目录
ls: 列出目录内容
mv: 重命名/移动文件或目录
cp: 复制文件(当给定 -r 标志时,递归复制目录)
rm: 删除文件或目录(当给定 -r 标志时,递归删除所有内容)
mkdir/rmdir: 创建或删除空目录
od: 八进制转储以八进制和其他格式显示文件内容
cat: 打印文件内容
less: 在允许您滚动的查看器中显示文件内容
clear: 清除终端屏幕
tree: 以树状格式列出目录内容
touch: 更改文件时间戳
whereis: 查找命令的二进制、源文件和手册页文件
exit: 退出 shell
man: 查找命令的手册页
假设您想查找 ls 程序的二进制文件、手册页和源代码的位置。
使用 whereis (-b 二进制文件, -m 手册页, -s 源代码)。下面显示了二进制文件和压缩手册页的路径,但系统上未找到源代码。
```
user @lubuntu-24-10:/$ whereis -b ls
ls: /usr/bin/ls
user @lubuntu-24-10:/$ whereis -m ls
ls: /usr/share/man/man1/ls.1.gz
user @lubuntu-24-10:/$ whereis -s ls
ls:
```
以符号 $ 开头
再次强调,Linux 区分大小写!示例:
```
user @lubuntu-24-10:/$ echo $PATH
/opt/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/usr/games
```
PATH 变量包含路径名列表,shell 在其中搜索用户命令。每个路径名都用冒号分隔。
mkdir
cd
rmdir
这些命令有许多选项可以使任务变得更容易。
创建空文件:touch
尝试这个:
```
touch -d "2004-02-29 16:21:42" hw1.c
date -r hw1.c
```
在上面的示例中,文件的最后修改日期已更改为 2004 年 2 月 29 日!不幸的是,这就是为什么不能迟交作业的原因。touch 命令可以将文件的最后修改日期向后调整数天、数月、数年甚至数十年!
在 VM 中使用命令行编辑器(警告:请先阅读编辑器!)
复制本地文件
```
cp
```
移动/重命名文件
```
mv
```
考虑右侧 tree 命令行实用程序的输出:
```
user @lubuntu-24-10:~/Shared$ tree hw4-quicksort
hw4-quicksort
```
1 使用命令行